//
// Created by Leaf on 2025/8/19.
//

#ifndef TRIGGERMODULE_ULTRASONIC_H
#define TRIGGERMODULE_ULTRASONIC_H

#include <Arduino.h>

// 超声波传感器类
class Ultrasonic {
private:
    uint8_t trig_pin;  // 超声波触发引脚
    uint8_t echo_pin;  // 超声波回响引脚 (与trig_pin相同时表示使用单引脚模式)

public:
    // 单引脚模式构造函数（适用于Grove超声波传感器）
    explicit Ultrasonic(uint8_t signalPin);
    
    // 双引脚模式构造函数（适用于传统超声波传感器）
    Ultrasonic(uint8_t trigPin, uint8_t echoPin);
    
    // 初始化超声波传感器
    void begin();
    
    // 获取距离值(cm)
    float getDistance() const;
    
    // 检查传感器是否正常工作
    bool isWorking() const;
    
    // 判断是否为单引脚模式
    bool isSinglePinMode() const;
};

#endif //TRIGGERMODULE_ULTRASONIC_H